home *** CD-ROM | disk | FTP | other *** search
/ NeXT Education Software Sampler 1992 Fall / NeXT Education Software Sampler 1992 Fall.iso / Programming / Source / WAIS / next-ui / BarChartCell.m < prev    next >
Encoding:
Text File  |  1992-02-03  |  2.3 KB  |  107 lines

  1. // BarChartCell.m
  2. //
  3. // Free software created 1 Feb 1992
  4. // by Paul Burchard <burchard@math.utah.edu>.
  5.  
  6. #import "BarChartCell.h"
  7. #import <appkit/appkit.h>
  8.  
  9. @implementation BarChartCell
  10.  
  11. - initTextCell:(const char *)aString
  12. {
  13.     [super initTextCell:aString];
  14.     barValue = 0.00;
  15.     barSize = 0.20;
  16.     padding = 0.45;
  17.     barGray = NX_DKGRAY;
  18.     return self;
  19. }
  20.  
  21. - drawInside:(const NXRect *)cellFrame inView:controlView
  22. {
  23.     NXRect barRect, barFrame, textRect;
  24.     float x, y, h, w;
  25.     id rtn;
  26.     
  27.     // Compute subcell rects.
  28.     x = NX_X(cellFrame); y = NX_Y(cellFrame);
  29.     w = NX_WIDTH(cellFrame); h = NX_HEIGHT(cellFrame);
  30.     NX_X(&barRect) = x + (1-barValue)*barSize*w;
  31.     NX_Y(&barRect) = y + padding*h/2;
  32.     NX_WIDTH(&barRect) = barValue*barSize*w;
  33.     NX_HEIGHT(&barRect) = (1-padding)*h;
  34.     NX_X(&barFrame) = x;        NX_Y(&barFrame) = y;
  35.     NX_WIDTH(&barFrame) = barSize*w;    NX_HEIGHT(&barFrame) = h;
  36.     NX_X(&textRect) = x + barSize*w;    NX_Y(&textRect) = y;
  37.     NX_WIDTH(&textRect) = (1-barSize)*w;NX_HEIGHT(&textRect) = h;
  38.     
  39.     // Draw subcells.
  40.     rtn = [super drawInside:&textRect inView:controlView];
  41.     PSsetgray(backgroundGray);
  42.     PSsetalpha(backgroundGray);
  43.     PScompositerect(NX_X(&barFrame), NX_Y(&barFrame),
  44.         NX_WIDTH(&barFrame), NX_HEIGHT(&barFrame), NX_SOVER);
  45.     PSsetalpha(1.0);
  46.     if([self isHighlighted]) PScompositerect(NX_X(&barFrame), NX_Y(&barFrame),
  47.         NX_WIDTH(&barFrame), NX_HEIGHT(&barFrame), NX_HIGHLIGHT);
  48.     PSsetgray(barGray);
  49.     PSrectfill(NX_X(&barRect), NX_Y(&barRect),
  50.         NX_WIDTH(&barRect), NX_HEIGHT(&barRect));
  51.     return rtn;
  52. }
  53.  
  54. - setBarValue:(float)aValue
  55. {
  56.     barValue = aValue;
  57.     if(barValue > 1.0) barValue = 1.0;
  58.     if(barValue < 0.0) barValue = 0.0;
  59.     return self;
  60. }
  61.  
  62. - (float)barValue
  63. {
  64.     return barValue;
  65. }
  66.  
  67. - setBarSize:(float)aValue
  68. {
  69.     barSize = aValue;
  70.     if(barSize > 1.0) barSize = 1.0;
  71.     if(barSize < 0.0) barSize = 0.0;
  72.     return self;
  73. }
  74.  
  75. - (float)barSize
  76. {
  77.     return barSize;
  78. }
  79.  
  80. - setPadding:(float)aValue
  81. {
  82.     padding = aValue;
  83.     if(padding > 1.0) padding = 1.0;
  84.     if(padding < 0.0) padding = 0.0;
  85.     return self;
  86. }
  87.  
  88. - (float)padding
  89. {
  90.     return padding;
  91. }
  92.  
  93. - setBarGray:(float)aValue
  94. {
  95.     barGray = aValue;
  96.     if(barGray > 1.0) barGray = 1.0;
  97.     if(barGray < 0.0) barGray = 0.0;
  98.     return self;
  99. }
  100.  
  101. - (float)barGray
  102. {
  103.     return barGray;
  104. }
  105.  
  106. @end
  107.